package com.yanggu.flink.datastream_api.json

import cn.hutool.json.JSONUtil

import scala.beans.BeanProperty

/**
 * scala的对于样例类的json序列化和反序列化测试
 */
object ScalaCaseClassJsonTest {

  def main(args: Array[String]): Unit = {
    //得到输出
    //{
    //    "name": "张三",
    //    "id": 1
    //}
    println(JSONUtil.toJsonPrettyStr(User(1, "张三")))

    //如果出现多余的字段也不会报错
    val jsonString =
      """
        |{
        |    "name": "张三",
        |    "id": 1,
        |    "age": 20
        |}
        |""".stripMargin
    println(JSONUtil.toBean(jsonString, classOf[User]))
  }

}

/**
 * 对于样例类中的每个字段需要添加@BeanProperty注解生成getter和setter方法
 * 添加var表示变量可以修改
 *
 * @param id
 * @param name
 */
case class User(@BeanProperty var id: Long,
                @BeanProperty var name: String)
